#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <stdlib.h>
static int S[10000],visit[8],val[8];
static int count=0;
void dfs(int len)
{
    if(len==8)
    {
        int tv = 0;
        for(int i = 0; i < 8; i++)
        {
            tv+=val[i]*pow(10,7-i);
        }
        S[count++]=tv;
        return;
    }
    if(count!=10000){
        for(int i = 0; i < 8; i++)
        {
            if(visit[i]==0)
            {
                val[len++]=i;
                visit[i]=1;
                dfs(len);
                len--;
                visit[i]=0;
            }
        }
    }
}
inline void setArray8(int *t, int v)
{
    for(int i = 0; i < 8; i++)
    {
        t[i]=v/pow(10,7-i);
        t[i]=t[i]%10+1;
    }
}
int main()
{
    memset(visit, 0, 8*4);
    dfs(0);
    int temp[8];

    int m,n;
    while (std::cin>>m>>n) {
        setArray8(temp, S[n-1]);
        if(m<8)
        {
            int delte = 8-m;
            for(int i = delte; i < 8; i++){
                if(i!=7)
                    std::cout<<temp[i]-delte<<" ";
                else
                    std::cout<<temp[i]-delte;
            }
        }else
        {
            int delte = m-8;
            for(int i = 1; i <= delte; i++)
                std::cout<<i<<" ";
            for(int i = 0; i < 8; i++)
            {
                if(i!=7)
                    std::cout<<temp[i]+delte<<" ";
                else
                    std::cout<<temp[i]+delte;
            }
        }
        std::cout<<std::endl;
    }
    return 0;
}
